using System;

namespace DependencyInjection
{
    /// <summary>
    /// [Singleton] is in principle optional, yet an important attribute 
    /// which may be applied to a Class (or a Struct). It works simply,
    /// during dependency satisfaction, if the newly generated object is
    /// marked as a [Singleton], a reference to that singleton is kept
    /// by the ObjectGenerator, and that same instance will be supplied 
    /// if another instance of that type is asked for. Note that this does 
    /// not guarantee that the Class is a singleton, just that the ObjectGenerator
    /// will not willingly generate more than one instance of the given class.
    /// </summary>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
    public class Singleton : Attribute
    {
    }
}